package util

type UserID uint32    //用户ID，等同于主账户ID
type AccountID uint64 //周期账户ID，等同于子账户ID
type StkID uint32     //指南针系统中的股票标识
type BoardID int64    //模型ID（-1~-4：日线~半小时线）
type TimeStamp uint64 //timestamp = date*1000000+time
type DateAndTime uint32
type ResultID uint64

//============================================================================\\
type Level uint8 //等级，用于状态评级，包括模型、账户、滤网、行情等
const LEVEL_COUNT = 4
const ( //A级最好，D级最差
	LEVEL_A Level = iota
	LEVEL_B
	LEVEL_C
	LEVEL_D
	LEVEL_UNKNOWN
)

//============================================================================\\
type Period uint8 //周期，在数据库中等同于KlineType
const PERIOD_COUNT = 4
const (
	PERIOD_DAY   Period = iota //日线
	PERIOD_2HOUR               //两小时
	PERIOD_HOUR                //小时
	PERIOD_HHOUR               //半小时
)

//============================================================================\\
type ModeType uint32 //模型类型
const (
	MODE_ALL      ModeType = ModeType(^ModeType(0)) //无
	MODE_ZHENDANG ModeType = 1                      //震荡 28-36
	MODE_NIUTOU   ModeType = 2                      //牛头  9-10
	MODE_CHAODIE  ModeType = 4                      //超跌  1-2 11-16
	MODE_QUSHI    ModeType = 8                      //趋势（包含其他） 3-8 17-27
	//保留
	MODE_SUIJI_201 ModeType = 64  //随机买卖201，需要过滤掉
	MODE_SUIJI_202 ModeType = 128 //随机买卖202，需要过滤掉
)

//============================================================================\\
type MarketCode uint64 //市场或概念板块
const MARKET_COUNT = 12
const (
	M_CODE_SZ50  MarketCode = iota //上证50  B00001 96605
	M_CODE_HS300                   //沪深300 B00002 96606
	M_CODE_CYB                     //创业板 B00007 96610
	M_CODE_ZXB                     //中小板 B00014 98206
	M_CODE_ZZ500                   //中证500 B00024 107082
	M_CODE_HSXP                    //沪深小盘 B00035 124598
	M_CODE_HZDP                    //沪中大盘 B00036 124599
	M_CODE_SZDP                    //深中大盘 B00037 124600
	M_CODE_ZHSC                    //证汇双持 B02149 107748
	M_CODE_YDYL                    //一带一路红旗下 B06100 134849
	M_CODE_RGZN                    //自力更生人工智能 B06305 134871
	M_CODE_JRKF                    //金融开放核心 B06501 139080
)

//============================================================================\\
type ConvType uint8 //账户收敛级别
const ConvType_COUNT = 3
const (
	CONV_NOT     ConvType = iota //不收敛
	CONV_NORMAL                  //正常收敛
	CONV_EXTREME                 //极端收敛
)

//============================================================================\\
type MethodStyle uint8 //打法风格
const (
	MethodStyle_Radical MethodStyle = iota //激进
	MethodStyle_Steady                     //保守
	MethodStyle_Safe
	MethodStyle_AllIn MethodStyle = 8 //全部打第一仓
	MethodStyle_Auto  MethodStyle = 9 //用于程序总体打法控制，不在具体账户中使用
)
const AmountOfMethodStyle = 3 //保守激进安全三种打法风格
//============================================================================\\
type MethodResult struct { //打法结果
	Prices   []int64 //出击位置价格 单位分
	Capitals []int64 //出击份额 单位分
	Pos      []int32 //下调点位（万分之）
	//	ExpectProfitRate float32             //预测收益率
}

//============================================================================\\
type MethodType uint8 //打法
const (
	MethodType_1 MethodType = iota //固定出击份额的二仓出击位置函数
	MethodType_2                   //不定出击份额的二仓出击位置函数
	MethodType_3                   //不定出击份额的三仓出击位置函数
)
const AmountOfMethodType = 3 //三种加仓类型
//============================================================================\\
type ACCVERSION uint8 //账户版本
const (               //版本等级
	ACCVERSION_1 ACCVERSION = iota //最低版本
	ACCVERSION_2                   //次低版本
	ACCVERSION_3                   //次高版本
	ACCVERSION_4                   //最高版本
)
